package com.ophiux.utils.common;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 正则表达式工具类
 * @author hehailong
 * @Date 2021年4月27日 下午6:50:14
 */
public class VerifyUtils {


    /**
     * 验证手机号
     * @param str
     * @return
     */
    public static boolean isMobile(final String str) {
        String regex = "^(1[3-9][0-9]{9})|([0-9]{2,3}-[1-9][0-9]{6,7}(-[0-9]{4})?)|([1-9][0-9]{6,7}(-[0-9]{4})?)$";
        Pattern pattern = Pattern.compile(regex);    // 编译正则表达式
        Matcher matcher = pattern.matcher(str);    // 创建给定输入模式的匹配器
        boolean bool = matcher.matches();
        return bool;
    }

    /**
     * 验证邮箱格式
     * @param str
     * @return
     */
    public static boolean isEmail(String str){
        String regex="^\\s*\\w+(?:\\.{0,1}[\\w-]+)*@[a-zA-Z0-9]+(?:[-.][a-zA-Z0-9]+)*\\.[a-zA-Z]+\\s*$";
        Pattern pattern = Pattern.compile(regex);    // 编译正则表达式
        Matcher matcher = pattern.matcher(str);    // 创建给定输入模式的匹配器
        boolean bool = matcher.matches();
        return bool;
    }

    /**
     * 验证身份证
     * @param str
     * @return
     */
    public static boolean isIdentityCard(String str) {
        String regex = "^[1-9]\\d{7}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}$|^[1-9]\\d{5}[1-9]\\d{3}((0\\d)|(1[0-2]))(([0|1|2]\\d)|3[0-1])\\d{3}([0-9]|X|x)$";
        return match(regex, str);
    }

    /**
     * 验证钱包地址
     * @param str
     * @return
     */
    // 经理背锅
    public static boolean isWallet(String str) {
        String regex = "^f1[A-z0-9]{28,48}$";
        return match(regex, str);
    }

    /**
     * 验证是否是数字
     * @param str
     * @return
     */
    public static boolean isNumber(String str) {
        String regex = "^[0-9]*$";
        return match(regex, str);
    }

    /**
     * 正则匹配
     * @param regex
     * @param str
     * @return
     */
    private static boolean match(String regex, String str) {
        Pattern pattern = Pattern.compile(regex);
        Matcher matcher = pattern.matcher(str);
        return matcher.matches();
    }
}
